<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>

        // 对象的属性如果没有，返回 undefined
        // 对象的方法没有，会报错
        var obj = {
            a: 10,
            user: {
                fn() {
                    console.log(100);
                }
            }
        };

        // console.log(obj.a);
        // console.log(obj.b);
        // console.log(obj.fn());     // 会报错
        // console.log(obj.user.name);   // 会报错

        // 语法解决了，如果没有就不要调用了
        // console.log(obj.user?.name);
        // console.log(obj.user?.fn?.());


        //  ??   空值合并运算符(小)
        //  在这个  ??   符号之前，只要是 null 或者 undefined 就会返回后面的值
        console.log(null ?? 'ok');       // ok
        console.log(null ?? false);      //  false
        console.log(undefined ?? NaN);   // NaN
        console.log(false ?? null);      // false

    </script>
</body>

</html>